{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# 岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "x = np.random.uniform(-3., 3. , size=100)\n",
    "X = x.reshape(-1,1)\n",
    "y = 0.5 * x + 3 + np.random.normal(0,1,size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106cce278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x,y)\n",
    "# plt.ylabel('Y label', rotation=0)\n",
    "# plt.yticks(rotation=-90,fontsize = 8)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model.base import LinearRegression\n",
    "from sklearn.metrics.scorer import mean_squared_error\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing.data import PolynomialFeatures\n",
    "from sklearn.preprocessing.data import StandardScaler\n",
    "\n",
    "def PolynomialRegression(degree):\n",
    "    return Pipeline(\n",
    "        [\n",
    "            ('poly', PolynomialFeatures(degree=degree)),\n",
    "            ('std_scaler', StandardScaler()),\n",
    "            ('lin_reg',LinearRegression())\n",
    "        ]\n",
    "    )\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection._split import train_test_split\n",
    "\n",
    "np.random.seed(666)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/seamonster/MachineLearningClassicAlgorithmEnv/lib/python3.6/site-packages/scipy/linalg/basic.py:1226: RuntimeWarning: internal gelsd driver lwork query error, required iwork dimension not returned. This is likely the result of LAPACK bug 0038, fixed in LAPACK 3.2.2 (released July 21, 2010). Falling back to 'gelss' driver.\n  warnings.warn(mesg, RuntimeWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "167.94010863221607"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_reg = PolynomialRegression(degree=20)\n",
    "poly_reg.fit(X_train, y_train)\n",
    "\n",
    "y_poly_predict = poly_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y_poly_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "预测测试数据集时均方误差值这么大，显然是过拟合了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106ccaac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 把拟合的曲线画出来\n",
    "X_plot = np.linspace(-3,3,100).reshape(100,1)\n",
    "y_plot = poly_reg.predict(X_plot)\n",
    "\n",
    "plt.scatter(x,y)\n",
    "plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "plt.axis([-3,3,0,6])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 把画图抽出来作为一个方法\n",
    "def plot_model(model):\n",
    "    X_plot = np.linspace(-3,3,100).reshape(100,1)\n",
    "    y_plot = model.predict(X_plot)\n",
    "\n",
    "    plt.scatter(x,y)\n",
    "    plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "    plt.axis([-3,3,0,6])\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108f7ab00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(poly_reg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用岭回归调整过拟合情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model.ridge import Ridge\n",
    "\n",
    "# 超参数α\n",
    "ridge = Ridge(alpha=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 封装一个使用岭回归的管道\n",
    "def RidgeRegression(degree, alpha):\n",
    "    return Pipeline([\n",
    "        ('poly', PolynomialFeatures(degree=degree)),\n",
    "        ('std_scaler', StandardScaler()),\n",
    "        ('ridge_reg',Ridge(alpha=alpha))\n",
    "    ])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### α取0.0001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.3233492753942235"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用岭回归后的（对测试集的）均方误差是多少呢？\n",
    "ridge1_reg =RidgeRegression(20, 0.0001)\n",
    "ridge1_reg.fit(X_train, y_train)\n",
    "\n",
    "y1_predict = ridge1_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y1_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "均方误差大幅下降了超过90%"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108f30668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用岭回归后的拟合曲线是什么样呢？\n",
    "plot_model(ridge1_reg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### α取1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.188875930421847"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge2_reg =RidgeRegression(20, 1)\n",
    "ridge2_reg.fit(X_train, y_train)\n",
    "\n",
    "y2_predict = ridge2_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y2_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108fec240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制拟合曲线\n",
    "plot_model(ridge2_reg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### α取100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.3196456113086197"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge3_reg =RidgeRegression(20, 100)\n",
    "ridge3_reg.fit(X_train, y_train)\n",
    "\n",
    "y3_predict = ridge3_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y3_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10922c278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge3_reg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### α取一个非常大的数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.8408891248481221"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge4_reg =RidgeRegression(20, 1e8)\n",
    "ridge4_reg.fit(X_train, y_train)\n",
    "\n",
    "y4_predict = ridge4_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y4_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1091bec88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge4_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
